RAID systems (Redundant Array of Independent or Inexpensive Disks systems) permit several inexpensive smaller physical disks to behave as a larger and more expensive physical disk. The use of several smaller physical disks in place of a single larger physical disk is less expensive and also provides a higher degree of protection for the stored data. As known to those skilled in the art, most RAID implementations enhance the reliability and integrity of data storage through the redundant writing of data “stripes” across a given number of physical disks in the RAID disk group, and the appropriate storing of redundant information with respect to the data stripes. The redundant information may be subsequently retrieved to enable recovery of data when one of the disks fails. Striping is the process of storing and/or reading user data across several disks in parallel and in equal-sized blocks of data, and improves the overall performance of the storage subsystems. The term “RAID” and its various implementations are well-known and disclosed in, for example, “A Case for Redundant Arrays of Inexpensive Disks (RAID)”, by D. A. Patterson, G. A. Gibson and R. H. Katz, Proceedings of the International Conference on Management of Data (SIGMOD), June 1988.
In order to improve data reliability and/or facilitate disaster recovery of data in the event of a failure of a node, its associated disks, or some portion of the storage infrastructure, it is common to “mirror” (or replicate) some or all of the underlying data and/or the file system that organizes the data in a node. In one example, a mirror is established and stored at a destination volume, so that it is more likely that recovery is possible in the event of a disaster (or other types of failures) that may physically damage the source volume or its infrastructure. A volume is formed by one or more physical storage disks that define an overall logical arrangement of storage space. The disks within a volume are typically organized as one or more disk groups of RAID. The mirror is updated at regular intervals which are typically set by an administrator, in an effort to catch the most recent changes to the file system. In the mirror update process, the data is read from the source volume and written to the destination volume via a network such as, for example, the Internet or other types of network. In other implementations, the source volume and the destination volume are associated with the same network node. One example product that implements the mirroring technology is the SnapMirror® software from NETWORK APPLIANCE, INCORPORATED. It is also noted that the mirroring of volumes between two separate nodes differs from the disk mirroring technique that is used in RAID Level 1 (i.e., “RAID 1”). As known to those skilled in the art, the disk mirroring technique in RAID 1 involves writing data to two disks in a disk group of RAID so that the data can be recovered in the event of a disk failure.
Striping optimizes the writes by writing the data across multiple disks on the destination volume. Data from the source volume is sent to the destination volume in a packet order that is optimized for writing in stripes. A check operation will verify if the data in a destination volume is identical to the data in a source volume. The check operation is performed by currently-available products such as, for example, the SnapMirror® software. When performing a check operation, reads are performed on the destination volume. While striping is optimized for writes, the use of striping is not optimized for reads to disks. The use of striping for reads (i.e., striped reads) slows down the completion of the read operation because reading is required to be completed across all of the multiple disks before the read data are obtained from the multiple disks. In other words, the read data is not obtained from any of the disks until the reads have been completed across all of the multiple disks. Since the read data is not obtained until reading is completed across all of the multiple disks, there is a delay in verifying if the data in the destination volume is identical to the data in the source volume. Therefore, it would be advantageous to increase the speed of the reading operations to the disks in the destination volume, so that the delay can be reduced in verifying if the destination volume data is identical to the source volume data.